#!/usr/bin/env python
"""
快速启动脚本

这个脚本提供了一个简单的命令行界面来启动FastAPI应用程序，
并可以指定一些基本配置选项。
"""

import argparse
import uvicorn
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

def main():
    # 创建命令行参数解析器
    parser = argparse.ArgumentParser(description="FastAPI Starter 启动脚本")
    
    # 添加命令行参数
    parser.add_argument(
        "--host", 
        type=str, 
        default=os.getenv("API_HOST", "0.0.0.0"),
        help="服务主机地址 (默认: 0.0.0.0)"
    )
    parser.add_argument(
        "--port", 
        type=int, 
        default=int(os.getenv("API_PORT", 8000)),
        help="服务端口 (默认: 8000)"
    )
    parser.add_argument(
        "--reload", 
        action="store_true", 
        default=True,
        help="启用自动重载 (默认: 启用)"
    )
    parser.add_argument(
        "--log-level", 
        type=str, 
        default=os.getenv("LOG_LEVEL", "info"),
        choices=["critical", "error", "warning", "info", "debug", "trace"],
        help="日志级别 (默认: info)"
    )
    parser.add_argument(
        "--env", 
        type=str, 
        default=os.getenv("API_ENV", "development"),
        choices=["development", "production", "testing"],
        help="运行环境 (默认: development)"
    )
    
    # 解析命令行参数
    args = parser.parse_args()
    
    # 设置环境变量
    os.environ["API_ENV"] = args.env
    os.environ["API_HOST"] = args.host
    os.environ["API_PORT"] = str(args.port)
    os.environ["LOG_LEVEL"] = args.log_level
    
    # 打印启动信息
    print(f"启动 FastAPI Starter 应用程序...")
    print(f"环境: {args.env}")
    print(f"主机: {args.host}")
    print(f"端口: {args.port}")
    print(f"日志级别: {args.log_level}")
    print(f"自动重载: {'启用' if args.reload else '禁用'}")
    print(f"API文档: http://{args.host if args.host != '0.0.0.0' else 'localhost'}:{args.port}/api/docs")
    print("\n按 Ctrl+C 停止服务器\n")
    
    # 启动服务器
    uvicorn.run(
        "main:app", 
        host=args.host, 
        port=args.port, 
        reload=args.reload, 
        log_level=args.log_level
    )

if __name__ == "__main__":
    main()